package flc.ast.utils;





import android.content.Context;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.print.PageRange;
import android.print.PrintAttributes;
import android.print.PrintDocumentAdapter;
import android.print.PrintDocumentInfo;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import java.io.File;
import java.io.IOException;

public class HtmlToPdfConverter {
//    private final Context context;
//    private final WebView webView;
//
//    public HtmlToPdfConverter(Context context) {
//        this.context = context;
//        this.webView = new WebView(context);
//        // 启用硬件加速确保内容完整渲染
//        webView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null);
//    }
//
//    public void convert(String html, File outputFile, ConversionCallback callback) {
//        webView.setWebViewClient(new WebViewClient() {
//            @Override
//            public void onPageFinished(WebView view, String url) {
//                generatePdf(outputFile, callback);
//            }
//        });
//        webView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
//    }
//
//    private void generatePdf(File outputFile, ConversionCallback callback) {
//        PrintAttributes attributes = new PrintAttributes.Builder()
//                .setMediaSize(PrintAttributes.MediaSize.ISO_A4)
//                .setResolution(new PrintAttributes.Resolution("pdf", "pdf", 300, 300))
//                .build();
//
//        PrintDocumentAdapter adapter = webView.createPrintDocumentAdapter("Document");
//
//        // 正确实现LayoutResultCallback抽象方法
//        adapter.onLayout(null, attributes, null, new CancellationSignal(),
//                new PrintDocumentAdapter.LayoutResultCallback() {
//                    @Override
//                    public void onLayoutFinished(PrintDocumentInfo info, boolean changed) {
//                        try {
//                            adapter.onWrite(new PageRange[]{PageRange.ALL_PAGES},
//                                    getOutputFileDescriptor(outputFile),
//                                    new CancellationSignal(),
//                                    new MyWriteResultCallback(callback, outputFile));
//                        } catch (IOException e) {
//                            callback.onFailure(e.getMessage());
//                        }
//                    }
//                });
//    }
//
//    private ParcelFileDescriptor getOutputFileDescriptor(File file) throws IOException {
//        if (!file.getParentFile().exists()) {
//            file.getParentFile().mkdirs();
//        }
//        return ParcelFileDescriptor.open(file,
//                ParcelFileDescriptor.MODE_READ_WRITE |
//                        ParcelFileDescriptor.MODE_CREATE |
//                        ParcelFileDescriptor.MODE_TRUNCATE);
//    }
//
//    public interface ConversionCallback {
//        void onSuccess(File outputFile);
//        void onFailure(String error);
//    }
//
//    private class MyWriteResultCallback extends PrintDocumentAdapter.WriteResultCallback {
//        private final ConversionCallback callback;
//        private final File outputFile;
//
//        private MyWriteResultCallback(ConversionCallback callback, File outputFile) {
//            this.callback = callback;
//            this.outputFile = outputFile;
//        }
//
//        @Override
//        public void onWriteFinished(PageRange[] pages) {
//            callback.onSuccess(outputFile);
//        }
//    }
}









